A software development environment employs a variety of compilers, tools, and file organizing mechanisms to define and develop computer software. Typically a set of source files defines a software product or application, and undergo a series of transformations from a human readable source code into a machine executable format. A modern software development environment employs an object based approach that identifies classes codified in code files. Each class includes operations, or methods, for performing application tasks for a software application. The software application produces or generates a particular result from the logic-driven execution of the methods.
The classes in such an object based architecture inherit behaviors from parent classes to efficiently generate classes without redundant or repetitive code files. Classes are instantiated into objects via a compilation and build process to generate the executable application, as is known in the art. In a large system, such inheritance results in complex interrelations between the classes in a so-called inheritance hierarchy. Certain processing restrictions may limit or impose rules on inheritance capabilities for certain languages or platforms. While inheritance allows a class (i.e. code object) to inherit methods from another class for purposes of invoking methods in the inherited class (so-called extending the class), potential inconsistencies or processing restraints may result. For example, the popular Java® language prohibits extending multiple classes.
Therefore, when a class is compiled or interpreted to transform the human readable source code into machine executable instructions, the inheritance hierarchy is employed and traversed. Compiling and linking functions generate objects corresponding to the classes for performing the application tasks. Such compilations flag improper or disallowed inheritance. In a large software application, complex inheritance patterns may be problematic, and result in reworking or restructuring the class files to accommodate the build and compile class constraints. Often, remedial actions involve code sequences that duplicate or parallel method signatures (headers) or definitions. Such redundant code is sometimes referred to as “boilerplate” code.